1. Field of the Invention
The present invention relates to an input/output subsystem of a computer system. In particular, the present invention relates to a periodic input/output control method and apparatus for implementing the real time input/output function of multimedia data such as video image data or audio data.
2. Description of the Related Art
Inputting/outputting in the existing computer systems is conducted as described below. A processor (CPU) starts an input/output operation of an input/output controller. The input/output controller for controlling input/output devices notifies the processor of completion of the input/output operation by using an external interrupt. For example, such processing is conducted in a disk device.
This is caused by the following facts. First, the operating system cannot predict beforehand when the application program issues an input/output request. Secondly, the time required until the completion of the issued input/output operation is indefinite. In other words, external interrupts are used as means for the input/output controller to notify the processor of an input/output completion event which occurrence time cannot be predicted.
An interface with a program (or function or subroutine) provided to the application program by the system to cause such input/output operation to be conducted is called normal input/output interface.
However, inputting/outputting multimedia data such as video images requiring the real time processing causes a problem that data transfer throughput required for the real time transfer cannot be realized due to the overhead of this interrupt processing. Strictly speaking, besides the input/output completion interrupt processing, overheads of the input/output system call and task switching become bottlenecks on the performance. (Hereafter, these are generally referred to as software overheads.)
In the Quick Time of Apple Computer (multimedia extension of the Macintosh operating system), a new application interface is provided in order to reduce this software overhead (Inside Macintosh: Quick Time and Inside Macintosh: Quick Time Components). In the case where video images taken in this interface from a video digitizer (video input device) are outputted to a display device, some initializing functions are called and then the display start function SGStartPreview is called.
When the application has called the function SGStartPreview, the transfer of video data from the video digitizer to the display device is started. Upon start of this transfer, the function SGStartPreview is normally brought to an end without waiting the completion of data transfer and returns to the application, but the transfer of the video data is continued. In other words, video data divided into a plurality of blocks are continuously transferred one after another from the video digitizer to the display device, but the application is not notified of the transfer completion of each block. Upon calling the function SGStop by the application, the transfer of the video data can be finished.
The interface of the Quick Time does not return the control to the application when the operation for inputting from the video digitizer or the operation for outputting to the display device has been completed. The transfer of video data once started is continued without an interposition of the application until the stop function SGStop is explicitly called.
An interface with a program (or function or subroutine) provided to the application program by the system to cause such input/output operation to be conducted is called multimedia data transfer interface.
Multimedia data are characterized by a large volume and being accessed sequentiality and that the data volume to be transferred in a time unit can be predicted.
Since multimedia data contain moving picture signals and speech signals, real time processing is required of their transfer. Furthermore, multimedia data are stored in various media. In addition, transfer is conducted between various devices such as the media, a network control device, and a display device.
From the viewpoint of the input/output device, the above described video digitizer is occupied by one application task at a time. However, the greater part of input/output devices are shared by a plurality of application tasks.
An external interrupt which notify the completion of the input/output operation is generated by an input/output controller for controlling the input/output device. In existing systems, the normal input/output interface requiring an external interrupt for each completion of input/output operation cannot coexist with the multimedia data transfer interface which does not generate an external interrupt for each completion of input/output operation.
An object of the present invention is to provide a unific application interface usable in multimedia data transfer irrespective of the kind of the devices of the source and the destination.
Another object of the present invention is to provide an application interface which does not need specifying a physical input/output device so that an application task developed on a certain hardware device may operate on another hardware device as well.
Another object of the present invention is to cause devices such as a disk device and a network control device to be shared by an application task using the normal input/output interface which needs the input/output completion interrupt and an application task using the multimedia data transfer interface which suppresses the input/output completion interrupt.
Another object of the present invention is to prevent a delay from being caused in data transferred and inputted/outputted by either of the above described tasks.
In order to achieve the above described objects, the present invention provides the following four application interfaces for multimedia data transfer. Herein, the terms xe2x80x9cinput portxe2x80x9d and xe2x80x9coutput portxe2x80x9d indicate the data destination and source, respectively. If they are files stored in the disk device, they are identified by file names or file descriptors. If they are communication devices, they are identified by sockets or communication port descriptors.
In initializing or after initializing an input port and an output port, a first application interface is specified with port identifiers and declares that the ports are ports for multimedia data transfer.
A second application interface is specified with port identifiers each uniquely associated with each of these ports-to define a combination (channel) of an input port and an output port, and provides the channel with a unique identifier (channel identifier).
A third application interface is specified with this channel identifier and starts transfer of multimedia data. A fourth application interface is specified with this channel identifier and stops transfer of the multimedia data.
To implement this interface, a computer system according to the present invention has a channel table indicating association among input/output devices, ports and channels, a processing unit for inputting data into the channel table, and a processing unit for automatically generating an input/output command, starting input/output operation, and monitoring the end of the input/output command.
Furthermore, a computer system according to the present invention includes a status flag indicating for each input/output device whether the device is conducting input/output processing on real time multimedia data such as video images, a processing unit for setting the status flag when starting transfer of multimedia data to the input/output device by using the third application interface, a processing unit for resetting the status flag when stopping transfer of multimedia data to the input/output device by using the fourth application interface, a processing unit for controlling the on/off state of the external interrupt at the time of completion of the input/output operation for the input/output device according to the status flag when issuing the input/output command, and a processing unit for detecting the completion of the input/output operation by periodic polling in the case where the status flag is set and the external interrupt from the input/output device is off.